package vn.edu.tdt.it.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class OWLConst {
	public static String FILE_NAME = "config2.owl";
	//Các big tag
	public static final String BTAG_OBJ_PROP = "owl:ObjectProperty";
	public static final String BTAG_CLASS = "owl:Class";
	
	// Các attribute
	public static final String TYPE_ID = "rdf:ID";
	public static final String TYPE_ABOUT = "rdf:about";
	public static final String TYPE_RESOURCE = "rdf:resource";
	
	// Các tag
	public static final String TAG_DOMAIN = "rdfs:domain";
	public static final String TAG_RANGE = "rdfs:range";
	public static final String TAG_SUBCLASSOF = "rdfs:subClassOf";
	public static final String TAG_EQUIVALENTCLASS = "owl:equivalentClass";
	public static final String TAG_BEGIN = "rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\"\nxmlns:owl=\"http://www.w3.org/2002/07/owl#\"\nxmlns=\"http://www.xfront.com/owl/ontologies/camera/#\"\nxmlns:vu_tru=\"http://www.xfront.com/owl/ontologies/camera/#\"\nxml:base=\"http://www.xfront.com/owl/ontologies/camera/\"\nxmlns:Thing=\"http://www.w3.org/2002/07/owl#Thing\"\nxmlns:Nguoi=\"http://www.w3.org/2002/07/owl#Nguoi\" ";
	         
	// Xác định object
	public static final String IND_OBJECT = "wikibase-item";
	public static final String IND_STRING = "string";
	public static final String IND_TIME = "time";
	public static final String IND_LINK = "url";
	public static final String IND_QUANTITY = "quantity";
	
	public static final String LST_PROPERTY = "LST_PROPERTY";
	public static final String MP_PROPERTY = "MP_PROPERTY";
	// Các quan hệ
	public static final String PROP_IS_A = "p_is_a"; // là một
	public static final String PROP_BIRTH_PLACE = "p_birth_place"; // nơi sinh
	public static final String PROP_FATHER = "p_father";  // cha
	public static final String PROP_LANGUAGE = "p_language"; // ngôn ngữ
	public static final String PROP_OFFICIAL_LANGUAGE = "p_official_language"; //ngôn ngữ chính thức
	public static final String PROP_LINGUISTIC = "linguistic"; // ngữ hệ
	public static final String PROP_OFFICE = "p_office"; // chức vụ
	public static final String PROP_CLASSIFICATION_NAME = "p_class_name";  // tên phân loại
	public static final String PROP_TITLE = "p_title"; // tựa đề
	public static final String PROP_TIME_ZONE = "p_timezone"; // múi giờ
	public static final String PROP_DEGREE = "p_degree"; // học vị
	public static final String PROP_DATE_OF_DISCOVERY = "p_date_of_discovery"; // ngày khám phá
	public static final String PROP_ANTONYMS_TO ="p_antonyms_to"; // trái nghĩa với
	public static final String PROP_MOMENT ="p_moment"; // thời điểm
	public static final String PROP_NAME ="p_name"; // tên gọi
	public static final String PROP_GIVEN_BY = "p_given_by"; // được trao bởi
	public static final String PROP_POPULATION = "p_population"; // dân số
	public static final String PROP_PARTICIPATE = "p_participate"; // tham gia
	public static final String PROP_IDENTICAL_WITH = "p_identical_with"; // trùng với
	public static final String PROP_NUMBER_OF_PAGE = "p_number_of_page"; // số trang
	
	// Mã quan hệ
	public static final String PROP_IS_A_CD = "P31"; // là một
	public static final String PROP_BIRTH_PLACE_CD = "P19"; // nơi sinh
	public static final String PROP_FATHER_CD = "P22";  // cha
	public static final String PROP_LANGUAGE_CD = "P407"; // ngôn ngữ
	public static final String PROP_OFFICIAL_LANGUAGE_CD = "P37"; //ngôn ngữ chính thức
	public static final String PROP_LINGUISTIC_CD = "P133"; // ngữ hệ
	public static final String PROP_OFFICE_CD = "P39"; // chức vụ
	public static final String PROP_CLASSIFICATION_NAME_CD = "P225";  // tên phân loại
	public static final String PROP_TITLE_CD = "P357"; // tựa đề
	public static final String PROP_TIME_ZONE_CD = "P421"; // múi giờ
	public static final String PROP_DEGREE_CD = "P512"; // học vị
	public static final String PROP_DATE_OF_DISCOVERY_CD = "P575"; // ngày khám phá
	public static final String PROP_ANTONYMS_TO_CD ="P461"; // trái nghĩa với
	public static final String PROP_MOMENT_CD ="P585"; // thời điểm
	public static final String PROP_NAME_CD ="P735"; // tên gọi
	public static final String PROP_GIVEN_BY_CD = "P1027"; // được trao bởi
	public static final String PROP_POPULATION_CD = "P1082"; // dân số
	public static final String PROP_PARTICIPATE_CD = "P710"; // tham gia
	public static final String PROP_IDENTICAL_WITH_CD = "P1382"; // trùng với
	public static final String PROP_NUMBER_OF_PAGE_CD = "P1104"; // số trang
	
	
	/**
	 * <b>Lấy danh sách mã-tên atr quan hệ</b>
	 * <pre>Lấy danh sách mã-tên atr quan hệ</pre>
	 * 
	 * @since 2014/11/22
	 * @serialData SC01
	 * @author nbpla_000
	 */
	public static final Map<String, String> getMapProp() {
		Map<String, String> mapRet = new HashMap<String, String>();
		mapRet.put(PROP_IS_A_CD, PROP_IS_A);
		mapRet.put(PROP_BIRTH_PLACE_CD, PROP_BIRTH_PLACE);
		mapRet.put(PROP_FATHER_CD, PROP_FATHER);
		mapRet.put(PROP_LANGUAGE_CD, PROP_LANGUAGE);
		mapRet.put(PROP_OFFICIAL_LANGUAGE_CD, PROP_OFFICIAL_LANGUAGE);
		mapRet.put(PROP_LINGUISTIC_CD, PROP_LINGUISTIC);
		mapRet.put(PROP_OFFICE_CD, PROP_OFFICE);
		mapRet.put(PROP_CLASSIFICATION_NAME_CD, PROP_CLASSIFICATION_NAME);
		mapRet.put(PROP_TITLE_CD, PROP_TITLE);
		mapRet.put(PROP_TIME_ZONE_CD, PROP_TIME_ZONE);
		mapRet.put(PROP_DEGREE_CD, PROP_DEGREE);
		mapRet.put(PROP_DATE_OF_DISCOVERY_CD, PROP_DATE_OF_DISCOVERY);
		mapRet.put(PROP_ANTONYMS_TO_CD, PROP_ANTONYMS_TO);
		mapRet.put(PROP_MOMENT_CD, PROP_MOMENT);
		mapRet.put(PROP_NAME_CD, PROP_NAME);
		mapRet.put(PROP_GIVEN_BY_CD, PROP_GIVEN_BY);
		mapRet.put(PROP_POPULATION_CD, PROP_POPULATION);
		mapRet.put(PROP_PARTICIPATE_CD, PROP_PARTICIPATE);
		mapRet.put(PROP_IDENTICAL_WITH_CD, PROP_IDENTICAL_WITH);	
		mapRet.put(PROP_NUMBER_OF_PAGE_CD, PROP_NUMBER_OF_PAGE);
		return mapRet;
	}
	
	/**
	 * <b>Lấy danh sách tên atr quan hệ</b>
	 * <pre>Lấy danh sách tên atr quan hệ</pre>
	 * 
	 * @since 2014/11/22
	 * @serialData SC02
	 * @author nbpla_000
	 */
	public static final List<String> getListProp(){
		List<String> lstRet = new ArrayList<String>();
		lstRet.add(PROP_IS_A);
		lstRet.add(PROP_BIRTH_PLACE);
		lstRet.add(PROP_FATHER);
		lstRet.add(PROP_LANGUAGE);
		lstRet.add(PROP_OFFICIAL_LANGUAGE);
		lstRet.add(PROP_LINGUISTIC);
		lstRet.add(PROP_OFFICE);
		lstRet.add(PROP_CLASSIFICATION_NAME);
		lstRet.add(PROP_TITLE);
		lstRet.add(PROP_TIME_ZONE);
		lstRet.add(PROP_DEGREE);
		lstRet.add(PROP_DATE_OF_DISCOVERY);
		lstRet.add(PROP_ANTONYMS_TO);
		lstRet.add(PROP_MOMENT);
		lstRet.add(PROP_NAME);
		lstRet.add(PROP_GIVEN_BY);
		lstRet.add(PROP_POPULATION);
		lstRet.add(PROP_PARTICIPATE);
		lstRet.add(PROP_IDENTICAL_WITH);
		lstRet.add(PROP_NUMBER_OF_PAGE);
		return lstRet;
	}
}
